<?php
defined('_IN_CMS') or die('Fuck off');

class Gallery extends Db
{
    use data, face, rights;
    
    public function __construct()
    {
        $this->data['works_place'] = 'data/gallery/works/';
        $this->data['thumbs_place'] = 'data/gallery/thumbs/';
    }
    
    public function showLatestWorks($count)
    {
        echo '
            <div class="page_header">Последние работы в галерее</div>
            <div class="clear"></div>';
        
        // Показать последние работы в галерее
        $count *= ($count <= 0) ? -1 : 1;
        // <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
        echo '
        <script type="text/javascript">
            $(document).ready(function(){
            $("div.spoiler div.name span").toggle(function(){
            $(this).parent("div.name").parent("div.spoiler").children("div.text").show();
            $(this).parent("div.name").parent("div.spoiler").css("backgroundPosition", " -15px 0");
            },function(){
            $(this).parent("div.name").parent("div.spoiler").children("div.text").hide();
            $(this).parent("div.name").parent("div.spoiler").css("backgroundPosition", " 0 -15px");
            });
            });
        </script>

        <div> <!-- обёртка -->
                <div class="panel_addmsg">
                    <form style="margin-top: 8px;"><b>Выберите раздел галереи:</b> &nbsp; 
                        <select id="mymenu_iwetop" class="iwe_select">
                            <option value="" selected="selected">Все категории</option> 
                            <option value="/gallery-0c6">Предметная визуализация</option> 
                            <option value="/gallery-0c2">Архитектура: интерьер</option> 
                            <option value="/gallery-0c7">Художественная</option> 
                            <option value="/gallery-0c0">Транспорт</option> 
                            <option value="/gallery-0c1">Персонажи</option> 
                            <option value="/gallery-0c9">Фантастика, фэнтези</option> 
                            <option value="/gallery-0c3">Архитектура: экстерьер</option> 
                            <option value="/gallery-0c11">Природа/Органика</option> 
                            <option value="/gallery-0c12">Рекламная и печатная графика</option> 
                            <option value="/gallery-0c8">Game Low-poly</option> 
                            <option value="/gallery-0c15">На доработку</option>
                        </select>
                    </form>
                </div>
                    <div class="clear"></div>
                <div class="gallery_center_list">';
        
        $last_works = self::db_query("SELECT * FROM `gallery_works` ORDER BY `id` DESC LIMIT 10");

        for ($i = 0; $i < mysql_num_rows($last_works); $i++)
        {
            $this->data['img_id'] = dechex(mysql_result($last_works, $i, "id"));
            $this->data['img_name'] = dechex(mysql_result($last_works, $i, "id"));
            $this->data['title'] = mysql_result($last_works, $i, "title");
            while (strlen($this->data['img_name']) < 8) {
                $this->data['img_name'] = '0'.$this->data['img_name'];
            }
            $this->data['img_name'] .= 't.jpg';
/*

            if (file_exists($this->data['thumbs_place'].$this->data['img_name'])) {
                echo '<div class="gallery_work_shell" onClick="location.href=\'/gallery/show/'.$this->data['img_id'].'\'">
                    <img src="/'.$this->data['thumbs_place'].$this->data['img_name'].'" alt="'.$this->data['title'].'" class="gallery_thumb_img">
                    <div class="gallery_thumb_title">'.$this->data['title'].'</div>
                    </div>';
            }*/
            $this->showGalleryItem($this->data);
        }
        echo '
            <div class="clear"></div>
            <div style="text-align: left;">
               <div class="panel_addmsg">
                    <form action="/gallery" method="POST" enctype="multipart/form-data" style="margin-top: 8px;">
                        <input type="text" name="title" value="" placeholder="Название" class="input_text" pattern="[A-Za-zА-Яа-яЁё0-9\s]+" required><br>
                        <textarea name="description" value="" placeholder="Описание" class="input_text" pattern="[A-Za-zА-Яа-яЁё0-9\s]+" required></textarea><br>
                        Лицензия
                        <select name="license">
                            <option value="cc-by">CC-BY</value>
                        </select><br>
                        Альбом
                        <select name="album">
                            <option value="0">Основной</value>
                        </select><br>
                        <input type="text" name="tags" value="" placeholder="Теги через пробел" class="input_text" pattern="[A-Za-zА-Яа-яЁё0-9\s]+" required><br>
                        <input type="file" name="thumb" class="input_text" required><br>
                        <input type="submit" name="add_work" value="Добавить работу" class="button_login"><br>
                    </form>
                </div>
           </div>
            </div>
            ';
        echo '
            </div>
            </div>
            <script type="text/javascript">
                var selectmenu=document.getElementById(\'mymenu_iwetop\');
                selectmenu.onchange=function(){
                    var chosenoption=this.options[this.selectedIndex];
                    window.location.replace(chosenoption.value);
                }
            </script>
            <!-- обёртка -->';
    }

    public function showWork($work_id)
    {
        $work_id = (int)$work_id;
        $work_id = ($work_id <= 0) ? abs($work_id) : $work_id;
        // Вывод страницы с конкретным изображением галереи
        $work = self::db_query("SELECT `gallery_works`.`id` as 'art_id', `gallery_works`.`title`, 
        `gallery_works`.`owner`, `gallery_works`.`description`, `gallery_works`.`mark`, 
        `gallery_works`.`date`, `gallery_works`.`ip`, `gallery_works`.`ua`, 
        `gallery_works`.`license`, `gallery_works`.`tags`, `gallery_works`.`views`, 
        `gallery_works`.`marks`, 
        `users00`.`id` as 'user_id', `users00`.`login` FROM `gallery_works`, `users00` 
        WHERE `gallery_works`.`id` = '$work_id' AND 
        `gallery_works`.`owner` = `users00`.`id` LIMIT 1 --");

        if (mysql_num_rows($work) == 1) {
            // Показать станицу с работой
            $this->data['img_name'] = dechex(mysql_result($work, 0, "art_id"));
            while (strlen($this->data['img_name']) < 8) {
                $this->data['img_name'] = '0'.$this->data['img_name'];
            }
            $this->data['img_name_thumb'] = $this->data['img_name'].'t.jpg';
            $this->data['img_name'] .= '.jpg';
            $this->data['id'] = dechex(mysql_result($work, 0, "art_id"));
            $this->data['img_id'] = dechex(mysql_result($work, 0, "art_id"));
            $this->data['title'] = mysql_result($work, 0, "title");
            $this->data['description'] = mysql_result($work, 0, "description");
            $this->data['mark_total'] = mysql_result($work, 0, "gallery_works.mark");
            $this->data['mark_count'] = mysql_result($work, 0, "gallery_works.marks");
            $this->showGalleryWorkFace($this->data);
        } else {
            // Такой работы нет
            self::printError("Такой работы нет");
        }
    }

    public function vote(&$user, $work_id, $mark)
    {
        $work_id = (int)$work_id;
        $mark = (int)$mark;
        if (($work_id <= 0) && ($mark < 1) && ($mark > 5)) return 0;
        if (self::can($user, 1)) {
            // Поодправить уровень привелегий для этого действия
            // Так как голосовать сейчас может только SVI
            self::db_query("UPDATE `gallery_works` SET `mark` = `mark` + '$mark',`marks` = `marks` + 1 WHERE `id` = '$work_id' --");
            echo 'get';
        }
    }
    
    public function addWork(&$user)
    {
        // Добавить работу в галерею
        if (self::can($user, 1)) {
            // Если SVI
            $this->data['title'] = $_POST['title'];
            $this->data['full_title'] = $_POST['full_title'];
            $this->data['description'] = $_POST['description'];

            if ($_FILES['thumb']['error'] == 0) {
                // Если принят файл

                // Обработка изображения (эскиз для сцены)
                $valid_types =  array('gif', 'jpg', 'jpeg', 'png');
                
                if (is_array($_FILES['thumb']['name'])) {
                    // Если передано несколько файлов
                    $this->errors[] = 'Моно передать только один файл';
                }
                
                if (substr_count($_FILES['thumb']['name'], '.') > 0) {
                    // Если имя файла содержит точку
                    $this->data['extension'] = $this->getExtension($_FILES['thumb']['name']);
                } else {
                    // Имя файла не содержит точку
                    $this->errors[] = 'Имя файла не содержит точку';
                }

                // Проверка размера изображения
                if ($_FILES['thumb']['size'] <= 0) {
                    // У файла нулевой размер
                    $this->errors[] = 'Файл имеет нулевой размер';
                }

                // Проверка разрешённого расширения
                if (!in_array($this->data['extension'], $valid_types)) {
                    $this->errors[] = 'У файла неверное расширение: ';
                }

                // Проверка ошибок
                if ($_FILES['thumb']['error'] != 0) {
                    // Какая-то ошибка
                    $this->errors[] = 'Какая-то ошибка';
                }

                // Перемещение файла
                if (!move_uploaded_file($_FILES['thumb']['tmp_name'], 'data/forum/_sections/'.$_FILES['thumb']['name'])) {
                    // Файл не перемещён
                    $this->errors[] = 'Возможная атака с помощью файловой загрузки!';
                }
            } elseif ($_FILES['thumb']['error'] == 1) {
                $this->errors[] = 'Какой бальщой файл';
            } elseif ($_FILES['thumb']['error'] == 2) {
                $this->errors[] = 'Какой бальщой файл';
            } elseif ($_FILES['thumb']['error'] == 3) {
                $this->errors[] = 'Загружаемый файл был получен только частично';
            } elseif ($_FILES['thumb']['error'] == 4) {
                $this->errors[] = 'Файл не был загружен';
            } elseif ($_FILES['thumb']['error'] == 6) {
                $this->errors[] = 'Отсутствует временная папка';
            } elseif ($_FILES['thumb']['error'] == 7) {
                $this->errors[] = 'Не удалось записать файл на диск';
            } elseif ($_FILES['thumb']['error'] == 8) {
                $this->errors[] = 'PHP-расширение остановило загрузку файла';
            }

            // Проверка данных (заголовок, полный заголовок, описание)
            if ($_POST['title'] != preg_replace('/[^a-z]+/iu', '', $_POST['title'])) {
                $this->errors[] = 'Неверно введены данные';
            }
            if ($_POST['full_title'] != preg_replace('/[^a-zа-яА-ЯёЁ\s]+/iu', '', $_POST['full_title'])) {
                $this->errors[] = 'Неверно введены данные2';
            }
            if ($_POST['description'] != preg_replace('/[^a-zа-яА-ЯёЁ\s]+/iu', '', $_POST['description'])) {
                $this->errors[] = 'Неверно введены данные3';
            }

            if (empty($this->errors[0])) {
                self::db_query("INSERT INTO `gallery_works` (`id`,`title`,`full_title`,`forum`,`description`, `hidden`, `closed`)
                    VALUES (NULL , '".$this->data['title']."', '".$this->data['full_title']."', '1', '".$this->data['description']."', '0', '0')");
                    $this->data['insert_id'] = self::insert_id();
                    rename('data/forum/_sections/'.$_FILES['thumb']['name'], 'data/forum/_sections/'.$this->data['insert_id'].'.'.$this->data['extension']);
                $this->printMessage("Работа успешно добавлена");
            } else {
                $this->printError($this->errors);
            }
        } else {
            $this->printError("У тебя недостаточно прав");
        }
        echo '<META HTTP-EQUIV="Refresh" CONTENT="0; URL='.$_SERVER['REQUEST_URI'].'">';
    }
}

?>
